home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 17
/
CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso
/
CUCD
/
Programming
/
DiceSource
/
test
/
lib
/
fseek.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-23
|
2KB
|
93 lines
/*
* fseek file
*/
#include <stdio.h>
static char Buf[8192];
main(ac, av)
char *av[];
{
FILE *fi;
char buf[128];
long i1;
long i2;
long r;
if (ac == 1) {
puts("fseek file");
exit(1);
}
fi = fopen(av[1], "r+");
if (fi == NULL) {
puts("open failed");
exit(1);
}
for (;;) {
printf("Command -");
fflush(stdout);
if (gets(buf) == NULL)
break;
switch(buf[0]) {
case 'r':
i1 = atoi(buf + 1);
if (i1 >= 0 && i1 <= sizeof(Buf)) {
r = fread(Buf, 1, i1, fi);
printf("r = %d\n", r);
dump(Buf, r);
}
break;
case 'w':
i1 = atoi(buf + 1);
if (i1 >= 0 && i1 <= sizeof(Buf)) {
setmem(Buf, i1, buf[strlen(buf)-1]);
r = fwrite(Buf, 1, i1, fi);
printf("r = %d\n", r);
}
break;
case 's':
i1 = atoi(buf + 1);
strtok(buf + 1, " \t");
i2 = atoi(strtok(NULL, " \t"));
r = fseek(fi, i1, i2);
printf("%d = fseek(fi, %d, %d)\n", r, i1, i2);
break;
case 't':
printf("pos = %d\n", ftell(fi));
break;
case 'u':
printf("result = %d\n", ungetc('x', fi));
break;
case 'q':
exit(0);
default:
printf("r bytes -read\n"
"w bytes c -write\n"
"s off how -seek\n"
"t -tell\n"
"u -ungetc\n"
"q -quit\n"
"h -help\n"
);
break;
}
}
}
dump(ptr, bytes)
unsigned char *ptr;
long bytes;
{
printf("<");
while (bytes > 0) {
printf("%c", *ptr);
--bytes;
++ptr;
}
printf(">\n");
}